package com.gs.common.callback.impl

import android.util.Log
import com.gs.common.callback.HttpCallback
import com.gs.common.constant.HttpCode
import com.gs.common.constant.StateCode
import okhttp3.Call
import okhttp3.Response
import org.json.JSONObject
import java.net.ConnectException
import java.net.SocketTimeoutException

class CommonHttpCallback(private val block: (Int) -> Unit): HttpCallback {
    override fun onSuccess(call: Call, result: String, response: Response) {
        val cookies = response.header("Set-Cookie")
        Log.d("cookies", "$cookies")
        val resultJSON = JSONObject(result)
        Log.d("result", result)
        Log.d("code", "${resultJSON["code"]}")
        if (resultJSON["code"] == HttpCode.SUCCESS_CODE) {
            block.invoke(StateCode.STATE_SUCCESS)
            return
        }
        block.invoke(StateCode.STATE_FAILED)
    }

    override fun onError(call: Call, e: Exception) {
        when(e) {
            is ConnectException -> {
                block.invoke(StateCode.NETWORK_ERROR)
            }
            is SocketTimeoutException -> {
                block.invoke(StateCode.SERVER_ERROR)
            }
            else -> {
                block.invoke(StateCode.UNKNOWN_ERROR)
            }
        }
    }
}